21835
13707
Нещодавно я пропустив частину свого коду JavaScript через JSLint Крокфорда, і це дало таку помилку:
Проблема в рядку 1, символ 1: Відсутнє твердження "використовувати сувору".
Виконуючи деякі пошуки, я зрозумів, що деякі люди додають "використовувати суворо"; в їх код JavaScript. Як тільки я додав заяву, помилка перестала з'являтися. На жаль, Google не розкрив велику частину історії цього рядкового висловлювання. Звичайно, це повинно мати щось спільне з тим, як JavaScript інтерпретується браузером, але я не уявляю, який би це був ефект.
Отже, що таке "використовувати суворо"; все про те, що це означає, і чи все ще це актуально?
Чи відповідає будь-який із поточних браузерів на "використовувати строго"; рядок чи це для подальшого використання? 
Ця стаття про строгий режим Javascript може вас зацікавити: Джон Резіг - строгий режим ECMAScript 5, JSON та багато іншого
Процитую деякі цікаві частини:
Строгий режим - це нова функція в ECMAScript 5, яка дозволяє розмістити програму або функцію в "суворому" робочому контексті. Цей суворий контекст перешкоджає вчиненню певних дій та створює більше винятків.
І:
Суворий режим допомагає кількома способами:
Він ловить деякі загальні кодування блоперів, створюючи винятки.
Він запобігає або видає помилки, коли вживаються відносно "небезпечні" дії (наприклад, отримання доступу до глобального об'єкта).
Це вимикає функції, які заплутані або погано продумані.
Також зверніть увагу, що ви можете застосувати "жорсткий режим" до всього файлу ... Або ви можете використовувати його лише для певної функції (все ще цитуючи статтю Джона Резіга):
// Несуворий код ...
(функція () {
"використовувати строго";
// Чітко визначте свою бібліотеку ...
}) ();
// Несуворий код ...
Що може бути корисно, якщо вам доведеться поєднувати старий і новий код ;-)
Отже, я гадаю, це трохи схоже на "використовувати строго", яке ви можете використовувати в Perl (звідси назва?): Це допомагає робити менше помилок, виявляючи більше речей, які можуть призвести до поломок.
Суворий режим тепер підтримується усіма основними браузерами.
Всередині власних модулів ECMAScript (з операторами імпорту та експорту) та класів ES6, суворий режим завжди ввімкнений і не може бути відключений.
|
Це нова функція ECMAScript 5. Джон Резіг написав хороший її резюме.
Це просто рядок, який ви вкладаєте у файли JavaScript (або у верхній частині файлу, або всередині функції), який виглядає так:
"використовувати строго";
Поміщення його у свій код зараз не повинно викликати проблем із поточними браузерами, оскільки це лише рядок. У майбутньому це може спричинити проблеми з вашим кодом, якщо ваш код порушує прагму. Наприклад, якщо у вас зараз є foo = "bar" без попереднього визначення foo, ваш код почне давати збій ... що, на мою думку, добре.
|
Вислів "використовувати строго"; вказує браузеру використовувати строгий режим, який є зменшеним і безпечним набором функцій JavaScript.
Перелік функцій (неповний)
Забороняє глобальні змінні. (Ловить відсутні декларації var і помилки в іменах змінних)
Безшумні невдалі призначення спричиняють помилку в суворому режимі (присвоєння NaN = 5;)
Спроби видалення властивостей, які можна видалити, будуть видалені (видалити Object.prototype)
Потрібно, щоб усі імена властивостей у літералі об’єкта були унікальними (var x = {x1: "1", x1: "2"})
Назви параметрів функції повинні бути унікальними (сума функції (x, x) {...})
Забороняє вісімковий синтаксис (var x = 023; деякі розробники помилково вважають, що попередній нуль нічого не змінює для зміни числа).
Забороняє ключове слово
eval у строгому режимі не вводить нових змінних
Забороняє видаляти прості імена (delete x;)
Забороняє прив'язку або присвоєння імен eval та аргументів у будь-якій формі
Строгий режим не псевдонім властивостей об’єкта аргументів з формальними параметрами. (тобто у функції sum (a, b) {return аргументи [0] + b;} Це працює, оскільки аргументи [0] прив’язані до a тощо).
argument.callee не підтримується
[Посилання: Строгий режим, мережа розробників Mozilla]
|
Якщо людей турбує використання суворого використання, варто переглянути цю статтю:
Підтримка ECMAScript 5 "Суворий режим" у браузерах. Що це означає? NovoGeek.com - веб-журнал Крішни
У ньому йдеться про підтримку браузера, але, що важливіше, як безпечно з нею боротися:
функція isStrictMode () {
поверни! це;
}
/ *
повертає false, оскільки 'this' відноситься до глобального об'єкта і
"! this" стає хибним
* /
функція isStrictMode () {
«використовувати строго»;
поверни! це;
}
/ *
повертає true, оскільки в суворому режимі ключове слово 'this'
не відноситься до глобального об'єкта, на відміну від традиційного JS.
Отже, тут, "це" не визначено, і "! Це" стає правдою.
* /
|
Слово обережності, всі ви, важкі програмісти: застосування "строго використовувати" до існуючого коду може бути небезпечним! Ця річ - це не якась наклейка із задоволенням від щасливого обличчя, якою ви можете ляпати код, щоб зробити його «кращим». За допомогою "використовувати сувору" прагму, браузер раптом БРОСИТИ винятки в випадкових місцях, яких він ніколи раніше не кидав, просто тому, що в цьому місці ви робите щось, що за замовчуванням / вільний JavaScript із задоволенням дозволяє, але суворий JavaScript не хоче! У вас можуть бути порушення строгості, що приховують рідко використовувані дзвінки у вашому коді, що створює виняток лише тоді, коли вони врешті-решт запускаються - скажімо, у виробничому середовищі, яке використовують ваші клієнти-платники!
Якщо ви збираєтеся піти на повагу, непогано застосувати "використовувати строге" поряд із всебічними модульними тестами та строго налаштованим завданням збірки JSHint, що дасть вам певну впевненість у тому, що в вашому модулі немає темного кута, який би підірвав жахливо лише тому, що ви ввімкнули строгий режим. Або, привіт, ось ще один варіант: просто не додайте "використовувати строго" до будь-якого вашого застарілого коду, це, мабуть, безпечніше, чесно. ОКОНЕЧНО НЕ додайте "строго використовувати" до будь-яких модулів, якими ви не володієте абопідтримувати, як сторонні модулі.
Думаю, хоча це тварина із смертоносною кліткою, "строго застосовуй" може бути хорошим матеріалом, але ти повинен робити це правильно. Найкращий час дотримуватися суворості - це коли ваш проект є новим і ви починаєте з нуля. Налаштуйте JSHint / JSLint з усіма попередженнями та варіантами, закріпленими настільки щільно, наскільки ваша команда може пережити, отримайте хорошу систему побудови / тестування / затвердження, що працює, як Grunt + Karma + Chai, і лише ПОТІМ почніть позначати всі нові модулі як " використовувати строго ". Будьте готові вилікувати багато дрібних помилок та попереджень. Переконайтеся, що всі розуміють серйозність, налаштувавши збірку на FAIL, якщо JSHint / JSLint спричиняє будь-які порушення.
Мій проект не був новим проектом, коли я прийняв "використовувати суворо". Як результат, моя IDE наповнена червоними позначками, оскільки я не маю "використовувати строго" на половині своїх модулів, і JSHint скаржиться на це. Це нагадування мені про те, який рефакторинг я повинен робити в майбутньому. Моя мета - звільнитись від червоних позначок через усі мої зниклі твердження "використовувати суворі", але до цього ще багато років.
|
Використання "використовувати строго"; не раптом покращує ваш код.
Суворий режим JavaScript - це функція ECMAScript 5. Ви можете ввімкнути суворий режим, оголосивши це у верхній частині вашого сценарію / функції.
'використовувати строго';
Коли механізм JavaScript побачить цю директиву, він почне інтерпретувати код у спеціальному режимі. У цьому режимі виникають помилки, коли виявляються певні практики кодування, які можуть стати потенційними помилками (що є причиною суворого режиму).
Розглянемо цей приклад:
var a = 365;
var b = 030;
У своїй одержимості вибудовувати числові літерали, розробник ненавмисно ініціалізував змінну b восьмеричним літералом. Нестрогий режим буде інтерпретувати це як числовий літерал зі значенням 24 (в основі 10). Однак суворий режим видасть помилку.
Невичерпний перелік спеціальностей у суворому режимі див. У цій відповіді.
Де я повинен використовувати "використовувати строго" ;?
У моєму новому додатку JavaScript: Абсолютно! Суворий режим можна використовувати як доносник, коли ви робите щось дурне зі своїм кодом.
У моєму існуючому коді JavaScript: Можливо, ні! Якщо у вашому коді JavaScript є твердження, заборонені в суворому режимі, програма просто зламається. Якщо ви хочете суворий режим, вам слід бути готовим до налагодження та виправлення існуючого коду. Ось чому використовується "використовувати строго"; не раптово покращує ваш код.
Як використовувати суворий режим?
Вставте "строго використовувати"; твердження поверх вашого сценарію:
// Файл: myscript.js
'використовувати строго';
var a = 2;
....
Зверніть увагу, що все у файлі myscript.js буде інтерпретовано в суворому режимі.
Або вставте "використовувати строго"; оператор у верхній частині тіла вашої функції:
функція doSomething () {
'використовувати строго';
...
}
Все в лексичній області функції doSomething буде інтерпретовано в суворому режимі. Тут важливо слово лексичний обсяг. Наприклад, якщо ваш суворий код викликає функцію бібліотеки, яка не є суворою, лише ваш код виконується в строгому режимі, а не викликану функцію. Див. Цю відповідь для кращого пояснення.
Які речі заборонені в суворому режимі?
Я знайшов приємну статтю, де описується кілька речей, які заборонені в суворому режимі (зверніть увагу, що це не ексклюзивний список):
Сфера дії
Історично склалося так, що JavaScript не знав, як функціонує
мають сферу дії. Іноді вони, здається, мають статичний масштаб, але деякі
функції змушують їх поводитися так, ніби вони динамічно масштабуються. Це
заплутаний, що ускладнює читання та розуміння програм.
Непорозуміння викликає помилки. Це також проблема для продуктивності.
Статичний масштаб дозволив би прив'язувати змінні при компіляції
часу, але вимога до динамічного обсягу означає, що прив'язка повинна бути
перенесено на час виконання, що має значну продуктивність
штраф.
Суворий режим вимагає, щоб усі прив’язки змінних здійснювались статично.
Це означає, що функції, які раніше вимагали динамічного прив'язки
повинні бути усунені або модифіковані. Зокрема, оператор with є
усунено, а здатність функції eval підробляти
Середовище абонента суворо обмежено.
Однією з переваг суворого коду є те, що такі інструменти, як YUI Compressor
може зробити кращу роботу при її обробці.
Маються на увазі глобальні змінні
JavaScript має на увазі глобальні змінні. Якщо
ви явно не оголошуєте змінну, глобальною змінною є
неявно оголошено для вас. Це полегшує програмування
початківці, тому що вони можуть знехтувати деякими своїми основними роботами по дому
домашні справи. Але це значно покращує управління більшими програмами
важко, і це значно погіршує надійність. Так строго
режимі, передбачувані глобальні змінні більше не створюються. Ти повинен
явно оголосити всі свої змінні.
Глобальні витоки
Є низка ситуацій, які можуть спричинити це
бути прив’язаним до глобального об’єкта. Наприклад, якщо ви забудете
надати новий префікс під час виклику конструкторафункція,
конструктора це буде несподівано прив'язане до глобального об'єкта, отже
замість того, щоб ініціалізувати новий об'єкт, він замість цього буде безшумно
втручання в глобальні змінні. У цих ситуаціях буде суворий режим
замість цього прив’яжіть це до невизначеного, що призведе до того, що конструктор
замість цього викиньте виняток, дозволяючи значно виявити помилку
швидше.
Шумний збій
JavaScript завжди мав властивості лише для читання, але ви
не міг створити їх самостійно до Object.createProperty ES5
функція викрила цю можливість. Якщо ви намагалися призначити значення
для властивості лише для читання, вона мовчки вийде з ладу. Завдання буде
не змінювати значення властивості, але ваша програма діятиме як
хоча це було. Це небезпека цілісності, яка може спричинити програми
перейти в суперечливий стан. У суворому режимі спроба змінити a
властивість лише для читання видасть виняток.
Вісімкові
Вісімкове (або основа 8) подання чисел було надзвичайно
корисно при програмуванні на машинному рівні на машинах, чиє слово
розміри були кратними 3. Вам потрібно було восьмеричне під час роботи з CDC
6600 мейнфрейм, який мав розмір слова 60 біт. Якби ви вміли читати
восьмеричне, ви можете розглядати слово як 20 цифр. Зображено дві цифри
операційний код, і одна цифра ідентифікувала один із 8 регістрів. Під час
це був повільний перехід від машинних кодів до мов високого рівня
вважається корисним для надання вісімкових форм у мовах програмування.
У мові C надзвичайно невдале уявлення про восьмеричність
вибрано: Ведучий нуль. Отже, в С 0100 означає 64, а не 100, а 08 - це
помилка, а не 8. Ще більше, на жаль, цей анахронізм був
скопійовано майже на всі сучасні мови, включаючи JavaScript, де
він використовується лише для створення помилок. Це не має іншого призначення. Так у
строгий режим, вісімкові форми більше не допускаються.
І так далі
Аргументів псевдо-масиву стає трохи більше
схожий на масив у ES5. У суворому режимі він втрачає абонента та абонента
властивості. Це дає можливість передавати свої аргументи ненадійним
код, не відмовляючись від конфіденційного контексту. Крім того,
аргумент властивість функцій виключається.
У строгому режимі дублікати ключів у літералі функції видають a
синтаксична помилка. Функція не може мати два параметри з однаковим іменем.
Функція не може мати змінну з таким самим іменем, як одна з її
параметри. Функція не може видалити власні змінні. Спроба
видалити неконфігуруване властивість тепер видає виняток. Примітивні
значення неявно не обертаються.
Зарезервовані слова для майбутніх версій JavaScript
ECMAScript 5 додає список зарезервованих слів. Якщо ви використовуєте їх як змінні або аргументи, строгий режим видасть помилку. Зарезервовані слова:
реалізує, інтерфейс, нехай, пакет, приватний, захищений, загальнодоступний, статичний та вихід
Подальше читання
Строгий режим - JavaScript | MDN
Підтримка браузера для суворого режиму
Перехід на суворий режим
|
Я настійно рекомендую кожному розробнику почати використовувати строгий режим вже зараз. Існує достатня кількість браузерів, що підтримують це, і суворий режим законно допоможе позбавити нас від помилок, про які ми навіть не знали, що містяться у вашому коді.
Очевидно, на початковому етапі будуть помилки, з якими ми ніколи раніше не стикалися. Щоб отримати повну вигоду, нам потрібно провести належне тестування після переходу на суворий режим, щоб переконатися, що ми все зловили. Безумовно, ми не просто вживаємо строго використання в нашому коді і припускаємо, що помилок немає. Отже, час почати використовувати цю неймовірно корисну функцію мови для написання кращого коду.
Наприклад,
var person = {
ім'я: 'xyz',
позиція: 'abc',
повне ім'я: function () {"використовувати строго"; повернути this.name; }
};
JSLint - це налагоджувач, написаний Дугласом Крокфордом. Просто вставте свій сценарій, і він швидко сканує на наявність помітних проблем та помилок у коді.
|
Я хотів би запропонувати дещо більш обґрунтовану відповідь, доповнюючи інші відповіді. Я сподівався відредагувати найпопулярнішу відповідь, але не вдалося. Я намагався зробити це якомога вичерпнішим та повноціннішим.
Для отримання додаткової інформації ви можете звернутися до документації MDN.
"використовувати сувору" директиву, введену в ECMAScript 5.
Директиви подібні до тверджень, але різні.
use strict не містить ключових слів: Директива - це простий вираз, який складається із спеціального рядкового літералу (в одинарних або подвійних лапках). Механізми JavaScript, які не реалізують ECMAScript 5, просто бачать вираз без побічних ефектів. Очікується, що майбутні версії стандартів ECMAScript запровадять використання як справжнє ключове слово; цитати таким чином застаріли б.
use strict може використовуватися лише на початку сценарію або функції, тобто воно має передувати кожному іншому (реальному) твердженню. Це не повинна бути перша інструкція у сценарії функції: їй можуть передувати інші вирази операторів, що складаються з рядкових літералів (і JavaScriptреалізації можуть розглядати їх як конкретні директиви реалізації). Оператори рядкових літералів, які слідують за першим реальним твердженням (у сценарії чи функції), є простими виразами виразів. Перекладачі не повинні тлумачити їх як директиви, і вони не мають жодного ефекту.
Директива use strict вказує, що наступний код (у сценарії чи функції) є строгим кодом.
Код на найвищому рівні сценарію (код, який не є функцією) вважається строгим кодом, коли скрипт містить директиву строгого використання.
Зміст функції вважається строгим кодом, коли сама функція визначена в суворому коді або коли функція містить директиву строгого використання.
Код, який передається методу eval (), вважається строгим кодом, коли eval () був викликаний із суворого коду або містить саму директиву use strict.
Суворий режим ECMAScript 5 є обмеженою підмножиною мови JavaScript, яка усуває відповідні дефіцити мови та забезпечує більш жорстку перевірку помилок та вищий рівень безпеки. Далі перелічено відмінності між суворим режимом та нормальним режимом (з яких перші три особливо важливі):
Ви не можете використовувати with-statement в суворому режимі.
У строгому режимі повинні бути оголошені всі змінні: якщо ви присвоїте значення ідентифікатору, який не оголошений змінною, функцією, параметром функції, параметром catch-clause або властивістю глобального об'єкта, ви отримаєте ReferenceError. У звичайному режимі ідентифікатор неявно оголошується як глобальна змінна (як властивість глобального об'єкта)
У суворому режимі ключове слово має значення невизначене у функціях, які були викликані як функції (а не як методи). (У звичайному режимі це завжди вказує на глобальний об'єкт). Ця різниця може бути використана для перевірки, чи реалізація підтримує суворий режим:
var hasStrictMode = (function () {"використовувати строго"; повернути це === undefined} ());
Також коли функція викликається за допомогою call () або застосовується в суворому режимі, тоді це саме значення першого аргументу виклику call () або apply (). (У звичайному режимі значення null і undefined замінюються глобальним об'єктом, а значення, які не є об'єктами, передаються в об'єкти.)
У строгому режимі ви отримаєте помилку TypeError, коли ви намагаєтесь призначити властивості лише для читання або визначити нові властивості для нерозширюваного об'єкта. (У звичайному режимі обидва просто виходять з ладу без повідомлення про помилку.)
У суворому режимі, передаючи код eval (), ви не можете оголошувати або визначати змінні або функції в області виклику (як це можна зробити в звичайному режимі). Натомість для eval () створюється нова область дії, а змінні та функції знаходяться в межах цієї області. Цей обсяг знищується після завершення eval ().
У строгому режимі аргумент-об'єкт функції містить статичну копію значень, які передаються цій функції. У звичайному режимі аргумент-об'єкт має дещо "магічну" поведінку: елементи масиву та названі параметри функції посилаються на одне і те ж значення.
У строгому режимі ви отримаєте SyntaxError, коли після оператора видалення буде вказаний некваліфікований ідентифікатор (змінна, функція або параметр функції). У звичайному режимі вираз видалення нічого не робить і вважається хибним.
У строгому режимі ви отримаєте помилку TypeError при спробі видалити неконфігуруване властивість. (У звичайному режимі спроба просто не вдається, і вираз видалення оцінюється як false).
У суворому режимі вважається синтаксичною помилкою при спробі визначити кілька властивостей з однаковим іменем для літералу об’єкта. (У звичайному режимі помилки немає.)
У суворому режимі вважається синтаксичною помилкою, коли оголошення функції має кілька параметрів з однаковим іменем. (У звичайному режимі помилки немає.)
У суворому режимі восьмеричні літерали заборонені (це літерали, які починаються з 0x. (У звичайному режимі деякі реалізації дозволяють восьмеричні літерали.)
У строгому режимі ідентифікатори eval та аргументи обробляються як ключові слова. Ви не можете змінити їх значення, не можете призначити їм значення і не можете використовувати їх як імена змінних, функцій, параметрів функцій або ідентифікаторів блоку catch.
У суворому режимі є більше обмежень на можливості перевірити стек дзвінків. arguments.caller і arguments.callee спричиняють помилку TypeError у функції в суворому режимі. Крім того, деякі властивості виклику та аргументів функцій у строгому режимі викликають помилку TypeError при спробі їх прочитати.
|
Мої два центи:
Однією з цілей суворого режиму є швидше налагодження проблем. Це допомагає розробникам, кидаючи виняток, коли трапляються певні неправильні речі, які можуть спричинити тиху та дивну поведінку вашої веб-сторінки. У той момент, коли ми використовуємо строге використання, код видасть помилки, що допомагає розробнику виправити це заздалегідь.
Кілька важливих речей, про які я дізнався після використання, використовуйте строге:
Запобігає загальній декларації змінних:
var tree1Data= {назва: 'Бананове дерево', вік: 100, лист: 100000};
Дерево функцій (typeOfTree) {
варіаційний вік;
var leafCount;
вік = typeOfTree.age;
leafCount = typeOfTree.leafCount;
nameoftree = typeOfTree.name;
};
var tree1 = нове Дерево (tree1Data);
console.log (вікно);
Тепер цей код створює nameoftree у глобальній області, до якого можна отримати доступ за допомогою window.nameoftree. Коли ми реалізуємо використання строгого коду, виникає помилка.
Uncaught ReferenceError: nameoftree не визначено
Зразок
Виключає з твердженням:
з операторами не можна звести до мінімуму за допомогою таких інструментів, як uglify-js. Вони також застаріли та вилучені з майбутніх версій JavaScript.
Зразок
Запобігає дублікатам:
Коли ми маємо повторюване властивість, воно видає виняток
Uncaught SyntaxError: дублювання властивості даних у об'єктному літералі немає
дозволяється в суворому режимі
«використовувати строго»;
var tree1Data = {
назва: 'Бананове дерево',
вік: 100,
Кількість листів: 100000,
назва: 'Бананове дерево'
};
Їх небагато, але мені потрібно отримати більше знань про це.
|
Якщо ви використовуєте браузер, випущений протягом минулого року або близько того, тоді він, швидше за все, підтримує строгий режим JavaScript. Лише старі браузери, що існували до того, як ECMAScript 5 став чинним стандартом, не підтримують його.
Цитати навколо команди переконуються, що код все одно буде працювати і в старих браузерах (хоча речі, які генерують синтаксичну помилку в суворому режимі, як правило, просто спричиняють несправність сценарію, який важко виявити в цих старих браузерах).
|
При додаванні "use strict"; наступні випадки видадуть SyntaxError перед виконанням сценарію:
Прокладаючи шлях для майбутніх версій ECMAScript, використовуючи одне з нещодавно зарезервованих ключових слів (напередодні ECMAScript 6): реалізації, інтерфейс, let, пакунок, приватний, захищений, загальнодоступний, статичний та вихід.
Оголошення функції в блоках
if (a : 3: 15)
о : 6: 5
Тут компілятор видає посилання на помилку. У строгому режимі компілятор не дозволяє нам використовувати змінну без її оголошення. Тож витоків пам'яті можна запобігти. Крім того, ми можемо написати більш оптимізований код.
|
Суворий режим усуває помилки, які будуть ігноруватися в несуворому режимі, роблячи таким чином javascript «більш захищеним».
Чи вважається це серед найкращих практик?
Так, це вважається частиною найкращих практик під час роботи з javascript, щоб включити строгий режим. Це робиться шляхом додавання нижчого рядка коду до вашого файлу JS.
'використовувати строго';
у вашому коді.
Що це означає для агентів користувачів?
Вказівка ​​на те, що код слід інтерпретувати в суворому режимі, вказує таким агентам користувача, як браузери, що вони повинні поводитися з кодом буквально як написаний і видавати помилку, якщо код не має сенсу.
Наприклад: Врахуйте у своєму .js-файлі такий код:
Сценарій 1: [БЕЗ СТРОГОГО РЕЖИМУ]
var city = "Чикаго"
console.log (city) // Друкує назву міста, тобто Чикаго
Сценарій 2: [БЕЗ СТРОГОГО РЕЖИМУ]
city ​​= "Чикаго"
console.log (city) // Друкує назву міста, тобто Чикаго
То чому ім’я змінної друкується в обох випадках?
Без увімкнення жорсткого режиму користувацькі агенти часто проходять ряд модифікацій проблемного коду, намагаючись надати йому сенс. На перший погляд, це може здатися прекрасною справою, і справді, робота за межами жорсткого режиму дозволяє людям змочувати ноги за допомогою коду JavaScript, не маючи при цьому всіх деталей. Однак, як розробник, я не хочу залишати помилку в своєму коді, оскільки знаю, що вона може повернутися і вкусити мене пізніше, а також я просто хочу написати хороший код. І тут суворий режим допомагає.
Сценарій 3: [СТРОГИЙ РЕЖИМ]
'використовувати строго';
city ​​= "Чикаго"
console.log (city) // Помилка посилання: присвоєння - це незадекларована змінна city.
Додаткова порада: Щоб підтримувати якість коду в жорсткому режимі, вам не потрібно писати це знову і знову, особливо якщо у вас є кілька файлів .js. Ви можете застосувати це правило глобально за допомогою правил eslint наступним чином:
Ім'я файлу: .eslintrc.js
module.exports = {
env: {
es6: правда
},
правила: {
суворо: ['помилка', 'глобальна'],
},
};
Гаразд, то що запобігти в суворому режимі?
Використання змінної без її оголошення призведе до помилки в суворому режимі. Це запобігає ненавмисному створенню глобальних змінних у всьому додатку. Приклад із друком у Чикаго охоплює це зокрема.
Видалення змінної, функції або аргументу - це ні-ні в суворому режимі.
«використовувати строго»;
функція x (p1, p2) {};
видалити x; // Це призведе до помилки
Дублювання імені параметра не дозволяється в суворому режимі.
«використовувати строго»;
функція x (p1, p1) {}; // Це призведе до помилки
Зарезервовані слова мовою Javascript заборонені в суворому режимі. Слова - це інтерфейс реалізації, let, пакети, приватний, захищений, загальнодоступний. статичний і вихід
Для отримання більш повного списку ознайомтеся з документацією MDN тут: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode
|
Високоактивне запитання. Заробіть 10 репутації, щоб відповісти на це питання. Вимога про репутацію допомагає захистити це питання від спаму та відсутності відповідей.
Не відповідь, яку ви шукаєте? Перегляньте інші запитання, позначені синтаксисом javascript jslint use-strict, або задайте своє запитання.